﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CRMBussines
{
    public partial class CrmBussines : IDisposable
    {
        public void AgregarCita(Agenda cita)
        {
            db = new CRMModelControladorDataContext(_cadenaConexion);
            cita.EstatusAgendaId = 1; //Activa
            db.Agendas.InsertOnSubmit(cita);
            db.SubmitChanges();

            HistoriaAgenda histo = new HistoriaAgenda();
            histo.AgendasId = cita.AgendasId;
            histo.Fecha = DateTime.Now;
            histo.UsuariosId = _usuarioFirmado.UsuariosId;
            histo.Comentario = cita.Comentarios;

            db.HistoriaAgendas.InsertOnSubmit(histo);
            db.SubmitChanges();
        }

        public void CancelaCita(int idAgenda, string Comentarios)
        {
            db = new CRMModelControladorDataContext(_cadenaConexion);
            Agenda cita = new Agenda();

            cita = db.Agendas.Single(c => c.AgendasId == idAgenda);
            cita.EstatusAgendaId = 2; //Cancelada
            db.SubmitChanges();

            HistoriaAgenda histo = new HistoriaAgenda();
            histo.AgendasId = idAgenda;
            histo.Fecha = DateTime.Now;
            histo.UsuariosId = _usuarioFirmado.UsuariosId;
            histo.Comentario = Comentarios;

            db.HistoriaAgendas.InsertOnSubmit(histo);
            db.SubmitChanges();
        }

        public void ReAgenda(int idCita, Agenda reCita)
        {
            db = new CRMModelControladorDataContext(_cadenaConexion);
            Agenda cita = new Agenda();

            cita = db.Agendas.Single(c => c.AgendasId == idCita);

            cita.EstatusAgendaId = 3;//Reasignada
            cita.Fecha = reCita.Fecha;
            cita.Hora = reCita.Hora;
            cita.Asunto = reCita.Asunto;
            cita.Mapa = reCita.Mapa;
            cita.Comentarios = reCita.Comentarios;
            cita.UsuariosIdAsignado = reCita.UsuariosIdAsignado;
            cita.UsuariosIdHecho = reCita.UsuariosIdHecho;
            cita.ProspectosId = reCita.ProspectosId;
            cita.HoraCita = reCita.HoraCita;
            cita.MinutosCita = reCita.MinutosCita;

            db.SubmitChanges();

            HistoriaAgenda histo = new HistoriaAgenda();
            histo.AgendasId = idCita;
            histo.Fecha = DateTime.Now;
            histo.UsuariosId = _usuarioFirmado.UsuariosId;
            histo.Comentario = "Reasignación de cita: " + reCita.Comentarios;

            db.HistoriaAgendas.InsertOnSubmit(histo);
            db.SubmitChanges();
        }

        public Agenda ObtenCita(int id)
        {

            Agenda cit = new Agenda();

            db = new CRMModelControladorDataContext(_cadenaConexion);
            cit = db.Agendas.Single(c => c.AgendasId == id);

            return cit;
        }

        public IQueryable<ResultadoBusquedaCitasXUsuario> ObtenCitasXUsuario(int id)
        {


            db = new CRMModelControladorDataContext(_cadenaConexion);

            IQueryable<ResultadoBusquedaCitasXUsuario> res = (from x in db.Agendas
                                                 where x.UsuariosIdAsignado == id && (x.EstatusAgendaId == 1 || x.EstatusAgendaId == 3)
                                                              select new ResultadoBusquedaCitasXUsuario()
                                                 {
                                                    AgendasId = x.AgendasId,
                                                    UsuariosIdAsignado = x.UsuariosIdAsignado,
                                                    UsuariosIdHecho = x.UsuariosIdHecho,
                                                    ProspectosId = x.ProspectosId,
                                                    Asunto  = x.Asunto,
                                                    Fecha  = x.Fecha,
                                                    Hora  = x.Hora,
                                                    Dia = x.Fecha.DayOfWeek,
                                                    Comentarios  = x.Comentarios,
                                                    Mapa  = x.Mapa,
                                                    EstatusAgendaId =  x.EstatusAgendaId,
                                                    UsuarioAsignado = x.Usuario.Nombre,
                                                    UsuarioHizo  = x.Usuario1.Nombre,
                                                    Prospecto  = x.Prospecto.Nombre,
                                                    Estatus  = x.EstatusAgenda.Descripcion,
                                                    HoraCita = x.HoraCita,
                                                    MinutosCita = x.MinutosCita,
                                                    Horas = x.HoraCita + ":" +  x.MinutosCita 
                                                 }
                                            );

            
            return res;
        }

    }



    public class ResultadoBusquedaCitasXUsuario
    {
        public int AgendasId { get; set; }
        public int UsuariosIdAsignado { get; set; }
        public int UsuariosIdHecho { get; set; }
        public int? ProspectosId { get; set; }
        public string Asunto { get; set; }
        public DateTime Fecha { get; set; }
        public DateTime Hora { get; set; }
        public DayOfWeek Dia { get; set; }
        public string Comentarios { get; set; }
        public string Mapa { get; set; }
        public int EstatusAgendaId { get; set; }
        public string UsuarioAsignado { get; set; }
        public string UsuarioHizo { get; set; }
        public string Prospecto { get; set; }
        public string Estatus { get; set; }
        public string HoraCita { get; set; }
        public string MinutosCita { get; set; }
        public string Horas { get; set; }
        
    }
}
